<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context 
                           http://www.springframework.org/schema/context/spring-context.xsd" >

    <!-- Define the controllers using annotations -->

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <context:component-scan base-package="de.hdu.tennis.ctrl" />

    <!-- Die folgenden beiden Teile wurden ausgelagert, damit der data-access-context für Unit-Tests wiederverwendet werden kann. -->


    <!-- ******************* -->
    <!-- Database -->
    <!-- ******************* -->

    <bean
        id="init"
        class="de.hdu.tennis.Startup"
        init-method="initDB" >

        <property
            name="driverClass"
            value="com.mysql.jdbc.Driver" />

        <property
            name="user"
            value="root" />

        <property
            name="password"
            value="" />

        <property
            name="defaultDBurl"
            value="jdbc:mysql://localhost:3306/mysql" />

        <property
            name="newDB"
            value="tennis" />
    </bean>

    <bean
        id="dataSource"
        class="com.mchange.v2.c3p0.ComboPooledDataSource"
        depends-on="init"
        destroy-method="close" >

        <property
            name="driverClass"
            value="com.mysql.jdbc.Driver" />

        <property
            name="jdbcUrl"
            value="jdbc:mysql://localhost:3306/tennis" />

        <property
            name="user"
            value="root" />

        <property
            name="password"
            value="" />

        <property
            name="minPoolSize"
            value="2" />

        <property
            name="maxPoolSize"
            value="4" />
    </bean>

    <!-- ******************* -->
    <!-- Hibernate -->
    <!-- ******************* -->

    <bean
        id="hibernateSessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >

        <property
            name="dataSource"
            ref="dataSource" />

        <property name="annotatedClasses" >

            <list>

                <value>
de.hdu.tennis.model.Bewertung
                </value>

                <value>
de.hdu.tennis.model.Mitglied
                </value>

                <value>
de.hdu.tennis.model.Reservierung
                </value>

                <value>
de.hdu.tennis.model.Tennisplatz
                </value>
            </list>
        </property>

        <property name="hibernateProperties" >

            <props>

                <prop key="hibernate.dialect" >
org.hibernate.dialect.MySQLDialect
                </prop>

                <prop key="hibernate.hbm2ddl.auto" >
update
                </prop>

                <prop key="hibernate.show_sql" >
true
                </prop>

                <prop key="hibernate.cache.provider_class" >
org.hibernate.cache.NoCacheProvider
                </prop>
            </props>
        </property>
    </bean>

    <bean
        id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager" >

        <property
            name="sessionFactory"
            ref="hibernateSessionFactory" />
    </bean>

    <!-- ******************* -->
    <!-- Data Access Objects -->
    <!-- ******************* -->

    <bean
        id="tennisplatzDao"
        class="de.hdu.tennis.dao.TennisplatzDao" >

        <property
            name="sessionFactory"
            ref="hibernateSessionFactory" />
    </bean>

    <bean
        id="mitgliedDao"
        class="de.hdu.tennis.dao.MitgliedDao" >

        <property
            name="sessionFactory"
            ref="hibernateSessionFactory" />
    </bean>

    <bean
        id="reservierungDao"
        class="de.hdu.tennis.dao.ReservierungDao" >

        <property
            name="sessionFactory"
            ref="hibernateSessionFactory" />
    </bean>

    <bean
        id="bewertungDao"
        class="de.hdu.tennis.dao.BewertungDao" >

        <property
            name="sessionFactory"
            ref="hibernateSessionFactory" />
    </bean>

    <bean
        id="loginController"
        class="de.hdu.tennis.ctrl.LoginController" >

        <property
            name="mitgliedDao"
            ref="mitgliedDao" />
    </bean>

    <!-- ******************* -->
    <!-- Controllers -->
    <!-- ******************* -->

    <bean
        id="tennisplatzController"
        class="de.hdu.tennis.ctrl.TennisplatzController" >

        <property
            name="tennisplatzDao"
            ref="tennisplatzDao" />
    </bean>

    <bean
        id="mitgliedController"
        class="de.hdu.tennis.ctrl.MitgliedController" >

        <property
            name="mitgliedDao"
            ref="mitgliedDao" />
    </bean>

    <bean
        id="reservierungController"
        class="de.hdu.tennis.ctrl.ReservierungController" >

        <property
            name="reservierungDao"
            ref="reservierungDao" />

        <property
            name="tennisplatzDao"
            ref="tennisplatzDao" />
    </bean>

    <bean
        id="bewertungController"
        class="de.hdu.tennis.ctrl.BewertungController" >

        <property
            name="bewertungDao"
            ref="bewertungDao" />

        <property
            name="tennisplatzDao"
            ref="tennisplatzDao" />
    </bean>

    <!-- ******************* -->
    <!-- Views -->
    <!-- ******************* -->

    <bean
        id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver" >

        <property
            name="prefix"
            value="/view/" />

        <property
            name="suffix"
            value=".jsp" />
    </bean>

</beans>